package com.zengqingfa.demo.runner;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author zengqingfa
 * @date 2019/11/22 11:16
 * @description
 * @email zengqingfa_java@163.com
 * <p>
 * ApplicationRunner 和 CommandLineRunner 功能一致，用法也基本一致，
 * 唯一的区别主要体现在对参数的处理上，ApplicationRunner 可以接收更多类型的参数（ApplicationRunner
 * 除了可以接收 CommandLineRunner 的参数之外，还可以接收 key/value 形式的参数）。
 * 使用 ApplicationRunner ，自定义类实现 ApplicationRunner 接口即可，
 *  组件注册以及组件优先级的配置都和 CommandLineRunner 一致
 *
 *  当项目启动时，这里的 run 方法就会被自动执行，关于 run 方法的参数 ApplicationArguments :
 * args.getNonOptionArgs();可以用来获取命令行中的无key参数（和CommandLineRunner一样）。
 * args.getOptionNames();可以用来获取所有key/value形式的参数的key。
 * args.getOptionValues(key));可以根据key获取key/value 形式的参数的value。
 * args.getSourceArgs(); 则表示获取命令行中的所有参数。
 *
 */
@Component
@Order(99)
public class MyCommandLineRunner implements CommandLineRunner {


    @Override
    public void run(String... args) throws Exception {
        System.out.println("MyCommandLineRunner...........");
    }
}
